

import ia = module("main/org/sdmx/model/v2/base/IdentifiableArtefact");

/**
	* Provides versioning for all derived objects.
	* 
	* @author Xavier Sosnovsky, Anthony Morel
	*/
export interface VersionableArtefact extends ia.IdentifiableArtefact
{
	/**
	    * The version string.
	    */
	getVersion():string;
		
	/**
	    * @private
	    */
	setVersion(version:string);
		
	/**
	    * The date from which the version is valid.
	    * 
	    * @throws ArgumentError <code>ArgumentError</code> If the start date is
	    * after the end date
	    */
	getValidFrom():Date;
		
	/**
	    * @private
	    */
	setValidFrom(date:Date);
		
	/**
	    * The date from which version is superceded.
	    * 
	    * @throws ArgumentError <code>ArgumentError</code> If the end date is
	    * before the begin date
	    */
	getValidTo():Date;
		
	/**
	    * @private
	    */
	setValidTo(date:Date);
}